package com.freeman.cement.service;

import com.freeman.cement.entity.MyEvent;
import com.freeman.cement.entity.ResponseResult;
import com.freeman.cement.myenum.EventCatlog;
import com.freeman.cement.myenum.EventHandleResult;

import java.util.List;

public interface EventHandleService {

    /**
     * 对接海康平台接收新报警事件，并生成记录
     */
    void handleNewEvent(MyEvent event, String handler, String handlerName, List<String> nexthandler, List<String> nexthandlerName);

    /**
     * 值班室接警处理
     */
    ResponseResult answerEvent(String eventId, Integer handler, Integer dutyRoomId);

    /**
     * 值班室关闭报警事件
     */
    ResponseResult closeEvent(String eventId, int handler, int dutyRoomId, EventCatlog catlog, String describe);

    /**
     * 值班室记录分派后续处理信息到数据库
     */
    ResponseResult assignment(String eventId, Integer handler, Integer dutyRoomId, String nextHandler, EventCatlog catlog, String describe);

    /**
     * 处置人员获取分派给自己的待处理事件
     */
    ResponseResult getAssignmentEvent(Integer userId, String eventId, Integer status, int pageNo, int pageSize);

    /**
     * 保存值班人员对报警事件的描述
     */
    ResponseResult saveEventDescribe(String eventId, int catlog, String describe);

    /**
     * 处理人处理后提交待验收
     */
    ResponseResult submitEventHandle(String eventId, int userId, String opinion);

    /**
     * 值班人员确认验收结果
     */
    ResponseResult confirmEventHandle(String eventId, int userId, String conclusion, EventHandleResult result);

    /**
     * 由APP用户发出的将原本分配给自己处理的报警事件转推到别的处置员处理，也就是处置员可以把分配给自己处理的报警事件转推给别人
     * @海康给出的事件id eventId
     * @原处理员/App登录用户id handler
     * @转推给新的处置人员id nextHandler
     * @return
     */
    ResponseResult retransmitAssignment(String eventId, int handler, int nextHandler);
}
